
#include "../../complib/libtsmp/include/tsmp_api.h"
#include "8021AS_PTP.h"

typedef struct
{
    tsmp_header tsmp_head;
    tsmp_get_req_pkt_data get_req_head;
    u32 sync_flag;
    u16 offset;
    u16 count;
    u32 cumulativeScaledRateOffset; // 上一级节点的cumulativeScaledRateOffset
    u8 gmtime[12];                  // GM时间
    u8 corrtime[8];                 // 校正域时间
    u8 macrecvtime[12];             // MAC接收时间
    u8 tscrecvtime[12];             // tsc接收时间
    u32 hwdelay;                    // 硬件计算的链路传输时延
    u8 cursyncclk[12];              // tsc接收到的sync同步时钟
    u8 clkset[12];                  // 计算得到的同步时间
    u32 ccid;                       // cyclestar序列号
    u8 tick_len[8];                 // 本地时钟的拍长
} __attribute__((packed)) response_sync_state_pkt;

typedef struct
{
    u8 t1[12]; // 本次测量时的t1值,格式为（ 48bit(s)+32bit(ns) )
    u8 t2[12]; // 本次测量时的t2值,格式为（ 48bit(s)+32bit(ns) )
    u8 t3[12]; // 本次测量时的t3值,格式为（ 48bit(s)+32bit(ns) )
    u8 t4[12]; // 本次测量时的t4值,格式为（ 48bit(s)+32bit(ns) )
} __attribute__((packed)) temp_osm_link_state_info;

typedef struct
{
    tsmp_header tsmp_head;
    tsmp_get_req_pkt_data get_req_head;
    temp_osm_link_state_info temp_link_state_info[MAX_PORT_NUM];
} __attribute__((packed)) response_delay_state_pkt;

int delay_state_pkt_process(sync_context *sync_para_context, u8 *pkt, u8 fre_switch);
int sync_state_pkt_process(sync_context *sync_para_context, u8 *pkt, sync_state_table *state_table, u8 fre_switch);
int synctime_write_file(u16 hcp_mid, u8 *pkt, u16 seq_num);
